In a real-time communication event, such as an audio or video call, a transmitter may transmit data to a receiver over a communication channel. A communication channel may exist in one (or more) of many different possible networks. For example, a communication channel may exist in the Internet or in a wireless network such as a mobile telecommunications network. The data (which may be transmitted in the form of data packets) may, detrimentally, be delayed or corrupted as it is transmitted over the communication channel. There are various techniques which may be employed to cope with the delay or corruption of the data as it is transmitted over the communication channel. As an example, a jitter buffer may be used at a receiver in order to smooth out the effects of variations in the delay of transmission of data in a real-time communication event. This increases the possibility of achieving continuous playback of the data at the receiver despite random variations in packet propagation delay (known as jitter). The jitter buffer is placed at the receiver and is used to accumulate a few data packets before starting playback at the receiver, thus introducing an extra delay (jitter buffer delay) into the communication event that helps to accommodate the data packet propagation delay jitter. The jitter buffer may adapt its delay during the communication event according to variations in the packet propagation delay. The jitter buffer may also sort data packets sent from the transmitter which arrive at the receiver out of order, such that the data packets can be played back at the receiver in the correct order. The jitter buffer may also discard data packets which are late, i.e. which arrive at the jitter buffer after the time at which they were scheduled to be played out from the jitter buffer at the receiver in the real-time communication event. The state of the jitter buffer describes the current conditions of the jitter buffer and may include, for example, the jitter buffer delay, jitter buffer size and/or an indication of the available space in the jitter buffer. The jitter buffer delay can be expressed in terms of an amount of time, e.g., a number of seconds (or more commonly, milliseconds) or in terms of a number of frames of content, e.g., of audio or video data. The jitter buffer size and the available space in the jitter buffer can be expressed in terms of the amount of data, such as a number of bits, bytes, or packets.
The jitter buffer delay can be controlled according to a number of trade-offs including:
1. A trade-off between the jitter buffer delay and the number of late data packets (i.e. the number of data packets arriving at the jitter buffer after the time at which they were scheduled to be played out from the jitter buffer at the receiver in the real-time communication event). While higher jitter buffer delay reduces the amount of late packets, the resulting increase in the playback delay can adversely affect the interactivity of real-time communication. So the jitter buffer delay can be balanced against the number of late data packets. In this way, if conditions on the communication channel used for the communication event change such that the number of late data packets changes, the jitter buffer delay can be controlled to balance the change in the number of late data packets.
2. A trade-off between the adaptation of the jitter buffer delay and the amount of modification introduced into the received signal. Increasing or decreasing the jitter buffer delay means that a part of the signal has to be played out at the receiver slower or faster than intended, which can result in quality degradations. However, it can still be beneficial to adapt the jitter buffer delay when necessary, so the adaptation of the jitter buffer can be balanced against the amount of modification introduced into the received signal.
In this way the receiver can control the jitter buffer delay which is used in a communication event.